﻿#ifndef DISKINFO_H
#define DISKINFO_H

#include <QBaseEntity>

class DiskInfo : public QBaseEntity
{
    Q_OBJECT
    // 定义属性
    Q_PROPERTY(QString device READ getDevice WRITE setDevice)
    Q_PROPERTY(QString model READ getModel WRITE setModel)
    Q_PROPERTY(QString serialNumber READ getSerialNumber WRITE setSerialNumber)
    Q_PROPERTY(uint64_t size READ getSize WRITE setSize)
    Q_PROPERTY(QString interfaceType READ getInterfaceType WRITE setInterfaceType)
    Q_PROPERTY(QString partitionCount READ getPartitionCount WRITE setPartitionCount)
public:
    explicit DiskInfo(QObject *parent = nullptr);

    QString getDevice() const;
    void setDevice(const QString &value);

    QString getModel() const;
    void setModel(const QString &value);

    QString getSerialNumber() const;
    void setSerialNumber(const QString &value);

    uint64_t getSize() const;
    void setSize(const uint64_t &value);

    QString getInterfaceType() const;
    void setInterfaceType(const QString &value);

    QString getPartitionCount() const;
    void setPartitionCount(const QString &value);

private:
    QString device;// 设备在操作系统中的标识路径（原始设备路径）
    QString model;// 磁盘制造商和型号信息（直接从硬件读取的原始字符串）
    QString serialNumber;// 磁盘的唯一硬件序列号（全大写且不含空格）
    uint64_t size;// 磁盘总容量（单位byte）
    QString interfaceType;// 磁盘接口的物理连接协议类型（全大写格式）
    QString partitionCount;// 磁盘上的分区总数（包括所有主分区、扩展分区和逻辑分区）
};

#endif // DISKINFO_H
